Support creating Applied/Broadcasted mixes via @~ #31
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR implements my suggestion #21 (comment) so that we can do
The main changes are:
@~
converts normal calls toapplied
.LazyArray
is added as suggested in Lazy broadcasting macro #21 (comment). It is the supertype ofBroadcastArray
andApplyArray
.@~
does not wrapBroadcasted
inBroadcastArray
anymore. Instead, users have to callLazyArray
explicitly.@~
callsinstantiate
onBroadcasted
s (this is the same as Faster mapreduce for Broadcasted JuliaLang/julia#31020)@mcabbott probably does not like that we need to write
sum(LazyArray(@~ ...))
to get the speedup. However, that's only until JuliaLang/julia#31020 is merged.I think it's nice to have an API that does not uses inference API so that
y .= @~ ...
can avoid inference overhead. It may be useful, e.g., inside a tight loop.